The present invention relates to data storage and more particularly relates to reducing a boot time of a data processing system (e.g., a computer system) by informing a memory device prior to boot about data that the host wants during boot time, and one or more destination addresses of host memory to which the data has to be transferred during the boot time.
Typically, a data processing system such as a computer system includes a host system and various types of memory devices used in various combinations to provide memory for the host system. For example, the computer system can be a personal computer (PC), a laptop, a tablet computing device, or a mobile phone (e.g., a smart phone). For example, the computer system can include the host system and an external memory device coupled to the host system. The external memory device can be, for example, a flash memory device.
In general when the host system is powered on, power-on initialization sequences and Read Input Output (IO) requests are issued to a non-volatile secondary storage device to get data, such as: instructions: for a boot Loader, the kernel, and power-on Applications; metadata; graphical images, etc. A significant amount of boot time is consumed to get the data from a secondary storage device associated with the host system to a main memory from where a host processor can execute instructions. Here, the term “data” should be broadly understood to include any information which is stored in the memory device, and can include both the actual instructions of various computer programs or software routines, and application or user data (e.g., image data) which may be employed by such computer programs and software routines.
In case of computer systems such as mobile phones (e.g., smart phones), tablet computing devices, televisions, etc., in general these computer systems will boot from a fixed storage devices. At the time of booting, fixed data stored in a fixed storage device will be transferred to fixed locations of the main memory of the host processor and none of the above parameters are going to change in case of booting from memory devices.
Every time when the computer system is powered on, it does predefined steps until device comes to a state where a user can start using the computer system. In existing computer systems, at boot time, whenever the host system requires data, host software will form a read command with a Physical Region Descriptor Table (PRDT) and issue the command to a storage host controller (HCl). In turn the storage host controller will send the command to the memory device. Then the memory device reads the data from memory (e.g., a NAND array), forms a data packet, and sends it to the storage host controller.
The storage host controller transfers the data to one or more physical memory addresses of the main memory as given in the PRDT. However, the processing of the read command at boot time/post boot time will incur latency in reading from the secondary storage device on demand, thus extending the time required from power-on until the device comes to a state where a user can start using the device.